/*
Kakine
ActionScript Framework
Copyright © 2011, PUNY, LLC.

This file is part of KAKINE.

KAKINE is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

KAKINE is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with KAKINE.  If not, see <http://www.gnu.org/licenses/>.
*/ 
package com.puny.mvc.controllers.platformer.adjuster
{
	import com.puny.mvc.controllers.platformer.IMainCharacterController;
	import com.puny.mvc.views.View;
	
	/**
	 * $Revision: 569 $
	 * Interface for enemies to adjust their movement in a platformer game
	 * The enemy should be a extended class from <code>EnemyController</code>
	 * The instance should be referred by <code>myself</code>.
	 */
	public interface IAdjuster
	{
		/**
		 * Main animation for an enemy will be handled in this method.
		 * If returns <code>true</code>, the main animation will keep going.
		 * If returns <code>false</code>, the main animation will stop.
		 * <code>myself.restartMainFrame</code> can start the main animation again.
		 */
		function procedure():Boolean;
		/**
		 * <code>faceLeft()</code> or <code>faceRight()</code> in <code>myself</code> should be called
		 * according to some conditions. 
		 */
		function face(sign:int=1):void;
		/**
		 * initialize <code>myself</code>
		 */
		function initialize(item:View):void;
		/**
		 * This should be called when <code>myself</code> hits something.
		 */
		function bound(item:View):void;
		
		function set mainCharacter(value:IMainCharacterController):void;
		
		function close():void;
	}
}